Semiconductor or solid state memory devices comprise electrical signals or charges arranged to be representative of the data which is desired to be stored in the memory device. Memory devices which require power to be supplied to them in order that the electrical signals can be maintained, sometimes referred to as being refreshed, are known as volatile memories. Memory devices not requiring power to maintain the electrical signals are known as non-volatile memories. An early type of non-volatile memory is known as a Read Only Memory (ROM), in which the electrical signals or charges representative of data were created at the time of manufacturing the ROM and then the data represented by the electrical signals was read back when the device was in operation. The facility for a user to program a ROM and electrically erase data stored on the device and replace it with other data is possible with Electrically Erasable Programmable Read Only Memories (EEPROMs).
Programming an EEPROMs is relatively slow since input/output of data and addressing is in a serial format. Additionally, special "high" voltages are required when programming the EEPROM. However, EEPROMs are particularly useful in portable electronic apparatus where user or system parameters are altered during use of the portable apparatus, and need to be stored when the apparatus is powered down for future use next time the portable apparatus is operating. Such a portable apparatus may be a radio telephone for example, where the parameters are for call counters/timers, last call stack, user settings for the user interface and user name and number memory for example. Such use may be referred to as a "write once/read many" type of application where the relative slowness during use and high power consumption during reprogramming does not mitigate against the use of EEPROMs for portable battery powered apparatus.
However, EEPROMs are typically only available in relatively small memory sizes such as 8 Kbyte or 16 Kbyte sizes, before they become prohibitively expensive. As more and more non-volatile memory space is required at lower power consumption for portable electronic apparatus, alternatives to EEPROM are required. Such an alternative is so-called Flash Memory which is available with large storage densities, for example 16 and 32 Mbit devices are commercially available.
Flash memory is faster than EEPROM since it uses a parallel addressing and data format. Additionally, it has lower stand-by power consumption than EEPROM. Flash memory erases in blocks which are groups of bytes usually in multiples of 4K, 8K, 16K and so-forth. Erasing a block at a time usually makes reprogramming Flash Memory faster than reprogramming EEPROM, which is the origin of the term "flash". Nevertheless, a block erase takes a relatively long time, typically 0.5 seconds for an 8 Kbyte block.
The feature of block only erase has resulted in Flash Memory being used to store "linked list" data structures. Such a structure is described in Intel Corporation Application Note AP-604 for their Smart Voltage Boot Block Flash Memory Family. In these Flash Memory devices two so-called parameter blocks are provided for storing data that will change. Only one of the parameter blocks is in use at any one time. Each data record comprises a parameter value and a pointer to the next record for that parameter. If the parameter value for a record is the current value then the pointer is "empty" or given a value such as FFH indicating that there is no further record for the parameter. When a parameter value is updated the pointer for the previous current value is changed from "empty" to having the address of the record in which the new parameter value is to be stored. The new record has the new value stored in it, and an "empty" pointer.
Parameter values are stored in the linked list structure until the current parameter block is full. When this point is reached the latest value for each parameter is stored in the second parameter block, now the current parameter block, and the linked list structure continues in the new current block. The original current parameter block is then erased.
However, although Flash Memory addresses some of the problems and drawbacks associated with EEPROMs and the like, Flash Memory has its own drawbacks. During an erase cycle it is not possible to read from any block, whether or not that block is being erased, which is a significant disadvantage over EEPROM where data can be read or written to any individual byte. Additionally, the number of erase cycles which Flash Memory can undergo before degradation in performance occurs is limited to about 100,000 erase cycles, which is significantly less than the limitation on EEPROMs.
The present invention aims to ameliorate at least one of the problems or drawbacks experienced with flash memory devices.